from django.core import serializers
import json
from django.http import JsonResponse


def queryset_to_json(queryset, fields_to_extract):
    """
    将查询集转换为格式化的 JSON 数据
    :param queryset: 要处理的查询集
    :param fields_to_extract: 要提取的字段列表
    :return: JsonResponse 对象
    """
    # 将查询集序列化为 JSON 字符串
    serialized_data = serializers.serialize('json', queryset)
    # 将 JSON 字符串转换为 Python 列表
    data_list = json.loads(serialized_data)
    # 提取需要的字段
    formatted_data = []
    for item in data_list:
        item_data = {'id': item['pk']}
        fields = item['fields']
        for field in fields_to_extract:
            item_data[field] = fields.get(field)
        formatted_data.append(item_data)
    return JsonResponse(formatted_data, safe=False)
